D哥,JDK16刚刚又发布了?网友:我还在用JDK8,是不是out了~
今天,有读者告诉D哥,JDK16的抢鲜体验版出来了,对于D哥这种JDK的死忠粉来说,怎么错过呢?
这不,马上下载下来品尝一番,有图为证。
先来测试一下,版本是否正确?
没错,还是这个味道~
说实话,JDK的发布速度是真的快啊,有点牛的一逼。之前看过一篇文章,博主Simon Ritter从Oracle目前为止的公开发布中做出推断,并绘图展示了Java 的发布节奏,如下图所示
我们从图中也可以发现JDK16也是一个短期版本,只支持6个月。长期版本也只有 7、8、11、17,因此,目前最新的LTS版本,就是 JDK 11,已于2018年9月发布。接下来,咱们只能期待2021年即将发布的下一个LTS版本JDK17~
这次发布的JDK16也只是个抢鲜版,它的正式版本需要在 2021 年 3 月 16 日发布。
如果你对JDK源码感兴趣,也可以通过Github去查看相关源码,目前有6.8k star。关于如何查看JDK16所提交的PR,大家可以参考D哥之前的文章《漫画:你真的懂Github吗?》。
源码地址:https://github.com/openjdk/jdk
Github的骚技巧真的好用,可以进行对比,来看看构建的这个抢鲜版,与之前的版本有哪些差别?如下图所示
好了,言归正传,咱们还是来看看这个版本又给咱们带来哪些新特性呢?
JEP338:Vector API(孵化器阶段)
为jdk.incubator.vector配备一个孵化器模块,以表达可在支持的 CPU 架构上编译为最佳矢量硬件指令的矢量计算,以实现优于等效标量计算的性能。
JEP347:启用 C ++ 14语言功能
允许在 JDK C ++源代码中使用 C ++ 14功能。
JEP357、369:源码迁移到Github
OpenJDK 源码从 Mercurial 迁移到 Git,托管平台也迁移到 GitHub。
源码地址:https://github.com/openjdk/jdk
JEP376:ZGC(Z 垃圾收集器)线程堆栈处理
去掉ZGC线程堆栈处理从安全点到并发阶段,该计划的目标包括从 ZGC 安全点中删除线程堆栈处理。
JEP380:Unix 域套接字通道
增加 Unix 域套接字通道,其中在 nio.channels 包中的套接字通道和服务器套接字通道 API 中增加了 Unix 域(AF_UNIX)套接字支持。
JEP386、388:将JDK移植到Windows/AArch64平台
JEP387:弹性元空间能力
它可以将未使用的 HotSpot VM 类元数据(元空间)内存更迅速地返回给操作系统,从而减少元空间的占用空间并简化元空间代码,从而降低维护成本。
JEP 389:外部存储器访问 API
允许 Java 程序安全地访问 Java 堆外部的外部存储器。
JEP392:打包管理工具
提供用于打包独立 Java 应用程序的 jpackage 工具,如下:
jpackage --name myapp --module-path lib -m myapp
JEP393:外部存储器访问 API
允许 Java 程序安全地访问 Java 堆外部的外部存储器。
JEP394:instanceof运算符的模式匹配
用于 instanceof 运算符的模式匹配,在 JDK 14 和 JDK 15 中进行了预览,将在 JDK 16 中完成,如:
if (obj instanceof String s && s.length() > 5) {
flag = s.contains("jdk");
}
JEP395:Records
就是对之前玩法进行加强处理。
JEP396:加强JDK内部封装
除了 misc.Unsafe 等关键的内部 API 外,默认情况下对 JDK 内部进行强封装。用户可以选择自 JDK 9 以来默认的宽松的强封装。
说实话,这些功能,在D哥看来,对于咱们日常开发来说,真没啥吸引力,D哥的同事曾这样说过,“自从JDK8以后,再也没有赶上趟~”,说实话,这句话说到大多数Java开发者的心坎里去了~
作为一名老的Java程序员,D哥反正扎心了,还是感谢Java给了我一口饭吃~
你目前在用哪个版本呢?欢迎在留言区说说。